#pragma once

namespace SL
{
struct Version
{};

enum class ResourceType
{
    Buffer,               // < Buffer. Can be bound to all shader-stages
    Texture1D,            // < 1D texture. Can be bound as render-target, shader-resource and UAV
    Texture2D,            // < 2D texture. Can be bound as render-target, shader-resource and UAV
    Texture3D,            // < 3D texture. Can be bound as render-target, shader-resource and UAV
    TextureCube,          // < Texture-cube. Can be bound as render-target, shader-resource and UAV
    Texture2DMultisample, // < 2D multi-sampled texture. Can be bound as render-target, shader-resource and UAV
};

class RenderHandle
{
    uint32_t uid;
    std::vector<Version> versions;
    size_t refCount;
};
/*
Async passes are kicked off on the main timeline at the point where they’d execute serially (we don’t re-order passes).
*/
} // namespace SL